// 7-4 按字母顺序排列出场国家名称 (5.18) (25分)
// 从键盘输入多个国家的名称，编写程序按字母顺序排列出场次序，并按出场顺序输出各国家名称。

// 输入格式:
// 第1行输入1个整数n(0≤n≤20)，表示出场国家数量；之后 n行，每行输入1个国家名称（国家名称长度不超过20，可含空格）。

// 输出格式:
// 按字母序输出n行国家名称。若输入国家数n不合题意，则输出“Data Error”；若国家数为0，无输出。
#include <stdio.h>
#include <string.h>
#define LENGTH 21
#define MAXN 20

char *swapStr(char *st1, char *st2);
char *s_gets(char *st, int n);
int main()
{
    int n, min;
    char NationArr[MAXN][LENGTH];
    scanf("%d", &n);
    getchar();  //读取剩下的换行符
    if (n > 20 || n < 0)
    {
        printf("Data Error");
    }
    else if (n > 0)  // 符合要求的输入 n>0 && n <= 20
    {
        for (int i = 0; i < n; ++i)
        {
            s_gets(NationArr[i], LENGTH);
        }
        // 选择排序
        for (int i = 0; i < n - 1; i++)
        {
            min = i;
            for (int j = i + 1; j < n; j++)
            {
                if (strcmp(NationArr[min], NationArr[j]) > 0) // min代表的国家名称大于j代表的名称，则交换
                {
                    min = j;
                }
            }
            if (min != i) // min != i 表示min索引之后有比min索引处字符串长度还要小的
            {
                swapStr(NationArr[min], NationArr[i]);
            }
        }
        for (int i = 0; i < n; ++i)
        {
            printf("%s\n", NationArr[i]);
        }
    }
    // 剩下的情况是n == 0, 不做任何处理

    return 0;
}

char *s_gets(char *st, int n)
{
    char *ret_val;
    int i = 0;
    ret_val = fgets(st, n, stdin);
    if (ret_val)
    {
        while (st[i] != '\n' && st[i] != '\0')
        {
            i++;
        }
        if (st[i] == '\n')
        {
            st[i] = '\0';
        }
        else
        {
            while (getchar() != '\n')
            {
                continue;
            }
        }
    }
    return ret_val;
}

char *swapStr(char *st1, char *st2)
{
    char temp[LENGTH];
    strcpy(temp, st1);
    strcpy(st1, st2);
    strcpy(st2, temp);
    return st2;
}
// 输入样例:
// 5
// Romania
// United Kingdom
// America
// China
// Brazil
// 输出样例:
// America
// Brazil
// China
// Romania
// United Kingdom
// 作者
// 汤练兵 孙骏
// 单位
// 武汉理工大学
// 代码长度限制
// 16 KB
// 时间限制
// 400 ms
// 内存限制
// 64 MB
